package com.topgay.service;

import java.io.IOException;
import java.util.List;

import org.springframework.web.multipart.MultipartFile;

import com.topgay.domain.ChattingMessage;

public interface ChattingService {
	
	/**
	 * 메세지를 보내는 메소드.
	 * ChattingMessage table의 rowNum 값을 생성하여 ChattingMessage객체를 생성후 insert 해주고
	 * 다시 해당 객체 return.
	 * @param fromId
	 * @param toId
	 * @param message
	 * @return 내가 보낸 메세지를 포함하는 ChattingMessage객체
	 */
	public abstract ChattingMessage sendPicture (ChattingMessage message, MultipartFile picture) throws IllegalStateException, IOException ;
	public abstract ChattingMessage sendMessage (ChattingMessage message);
	
	/**
	 * ChattingMessage객체의 rowNum값을 구해주는 메소드.
	 * 현재DB의 row갯수를 count한 후 +1을 해준다.
	 * @return 현재 DB에 있는 메세지 갯수.
	 */
	//public abstract int selectMessageCount();
	
	/**
	 * 상대방이 내게 보낸 메세지를 받아오는 메소드(2초마다 읽어온다.).
	 * 내게 보낸 메세지 list return.
	 * @param fromId
	 * @return 내게보낸 메세지를 포함한 ChattingMessage객체 List
	 */
	public abstract List<ChattingMessage> selectChattingMessageById(String fromId, String toId);
	
	public abstract List<ChattingMessage> selectTimeLineMessageById(String fromId, String toId);
	
	public abstract int makeTimeLineSeq(String fromId, String toId);
	
	/**
	 * 내가보낸 메세지를 채팅장에 다시 뿌려주기위한 메소드.
	 * Date를 DB에 저장할 때 시간을 저장하기 때문에 시간을 구하기 위해 디비에 접근.
	 * id로만 조회하면 전에 보냈던 메세지가 남아 있을 시 모두 가져오기 때문에 rowNum(PK)로 조회.
	 * 내가 보낸 메세지 return.
	 * @param rowNum
	 * @return 내가 보낸 메세지 ChattingMessage객체 
	 */
	public abstract ChattingMessage selectMessageByNum(int rowNum);
	
}
